import router from '@/router'

export default {
  state: {
    viewTags: [],
  },
  mutations: {
    pushViewTags(state, route) {
      let backPathIndex = state.viewTags.findIndex((item) => item.fullPath === router.options.history.state.back)
      let target = state.viewTags.find((item) => item.fullPath === route.fullPath)
      let isName = route.name
      if (!target && isName) {
        if (backPathIndex === -1) {
          state.viewTags.push(route)
        } else {
          state.viewTags.splice(backPathIndex + 1, 0, route)
        }
      }
    },
    removeViewTags(state, route) {
      state.viewTags.forEach((item, index) => {
        if (item.fullPath === route.fullPath) {
          state.viewTags.splice(index, 1)
        }
      })
    },
    updateViewTags(state, route) {
      state.viewTags.forEach((item) => {
        if (item.fullPath === route.fullPath) {
          item = Object.assign(item, route)
        }
      })
    },
    updateViewTagsTitle(state, title = '') {
      const nowFullPath = location.hash.substring(1)
      state.viewTags.forEach((item) => {
        if (item.fullPath === nowFullPath) {
          item.meta.title = title
        }
      })
    },
    clearViewTags(state) {
      state.viewTags = []
    },
  },
}
